import lightgbm as lgb
from sklearn2pmml import sklearn2pmml, PMMLPipeline
import lightgbm as lgb


def saveToPmml(booster, path):
    try:
        # 创建一个简单的 Pipeline 包装 LightGBM 模型
        pipeline = PMMLPipeline([
            ("classifier", lgb.LGBMRegressor(**booster.params))
        ])

        # 虽然没有训练数据，但需要拟合以生成 PMML
        # 这里使用虚拟数据，仅用于生成结构正确的 PMML
        X = [[0.0, 0.0]]  # 示例特征
        y = [0.0]  # 示例目标
        pipeline.fit(X, y)

        # 替换模型为已训练的 booster
        pipeline.steps[0][1].booster_ = booster

        # 导出为 PMML
        sklearn2pmml(pipeline, path, with_repr=True)
        print(f"模型已成功导出为 PMML: {path}")
    except Exception as e:
        print(f"导出模型时出错: {e}")



# # 保存为 LightGBM 原生格式
# booster.save_model("model.txt")
#
# # 加载模型
# loaded_model = lgb.Booster(model_file="model.txt")